/*
	Линейная интерполяция
*/

#pragma once

typedef struct
{
	double *vals_x;		/* Значения X */
	double *vals_y;		/* Значения Y */
	int linpol_degr;	/* Степень полинома */

} linpol_t;

#define LINPOL_T_SZ sizeof(linpol_t)

/* Выделение памяти под значения полинома */
#define linpol_alloc_mem(mem_len) (calloc((mem_len), sizeof(double)))

/* Создание объекта полинома */
linpol_t *linpol_new(const int);

/* Удаление объекта полинома */
void linpol_destroy(linpol_t *);

/* Генерирование исходных данных */
void linpol_gen_data(const linpol_t *, double, double, double (*) (const double));

/* Вычисление значения полинома */
double linpol_get_val(const linpol_t *, const double);

/* Вычисление теоретической погрешности */
double linpol_get_tfault(linpol_t *, const double, double (*) (const double));